package com.ikas.ai.server.common.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class CodeGenerator {
    private static final String URL = "jdbc:mysql://192.168.12.77:3306/ai_maintain_v1?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "iXnetCOM88";

    public static void main(String[] args) {
        // 设置需要生成的表名
        String tableName = "t_steady_alarm_data";
        // 设置过滤表前缀
        String tablePrefix = "t_";
        //当前模块基本路径
        String projectPath = System.getProperty("user.dir")+"/maintain-server";

        // 设置作者
        String authorName = "wuyf";
        FastAutoGenerator.create(URL, USERNAME, PASSWORD)
                .globalConfig(builder -> builder.author(authorName)
                        // 开启 swagger 模式
//                        .enableSwagger()
                        .disableOpenDir()
                        // 指定输出目录
                        .outputDir(projectPath + "/src/main/java"))
                .packageConfig(builder -> {
                    // 设置父包名
                    builder.parent("com.ikas.ai.server.module")
                            // 设置父包模块名
                            .moduleName("steady")
                            .mapper("dao")
                            //设置实体类存放位置
                            .entity("model.po")
                            // 设置mapperXml生成路径
                            .pathInfo(Collections.singletonMap(
                                    OutputFile.xml, projectPath + "/src/main/resources/mapper"))
                    ;
                })
                .strategyConfig(builder -> builder.addInclude(tableName)
                        .addTablePrefix(tablePrefix))
                .strategyConfig(builder -> {
                    //实体类相关配置
                    builder.entityBuilder()
//                            .enableTableFieldAnnotation() // 开启实体类字段注解
                            .enableLombok() // 开启lombok
                            .enableChainModel() // 开启链式模式
                            .enableFileOverride(); // 覆盖已生成文件
                })
                .strategyConfig(builder -> {
                    //mapper相关配置
                    builder.mapperBuilder()
                            .enableBaseResultMap() // 开启BaseResultMap
//                            .enableBaseColumnList() // 开启BaseColumnList
                            .enableFileOverride(); // 开启覆盖已生成文件
                })
                .strategyConfig(builder -> {
                    //service相关配置
                    builder.serviceBuilder()
                            .enableFileOverride(); // 开启覆盖已生成文件
                })
                .strategyConfig(builder -> {
                    //controller相关配置
                    builder.controllerBuilder()
                            .enableRestStyle()  //开启生成@RestController控制器
//                            .enableHyphenStyle() // 开启驼峰转连字符
                            .enableFileOverride(); // 覆盖已生成文件
                })
//                 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
        System.out.println("执行完成");
    }

}
